﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public class GestiónAcademia
    {
        public static string variable;
        Conexion conn = new Conexion();
        public string insertarEst(string rut, string fechanac, string nombre, string sexo, string telefono, string celular, string email, string avisar, string direc, string tel, string cel, string correo, string sangre, string alerg, string prev, int peso, int estatura, int calzado, string talla, string buzo, int convenio)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            string msg = "";
            try
            {
                //crear el objeto para realizar un insert
                string sql = "insert into alumno(rut,nombre,fecha_nac,sexo,telefono,celular,email,nombre_emerg ,direccion_emerg,telefono_emerg,celu_emerg,email_emerg,grupo_sangre,alergico,prevision ,estatura,peso,num_calzado,talla_traje,talla_buzo,idconvenio,total_pagar)values('" + rut + "','" + nombre +  "','" + fechanac +  "','" + sexo +  "','" + telefono +  "','" + celular +  "','" + email +  "','" + avisar +  "','" + direc +  "','" + tel +  "','" + cel +  "','" + correo +  "','" + sangre +  "','" + alerg +  "','" + prev +  "','" + estatura +  "','" + peso +  "','" + calzado +  "','" + talla +  "','" + buzo +  "','" + convenio +  "'," + 0 +")";
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                cmd.ExecuteNonQuery();
                msg = "Nuevo alumno ingresado";
            }
            catch (SqlException)
            {
                msg = "El RUT ingresado ya existe!";
     //               msg = ex.Message;
            }
            conn.desconectar();
            return msg;
        }

        public DataSet buscarCBconvenio()
        {
            conn.conectar();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("select descripción from convenio order by descripción asc", conn.conector);
            da.Fill(ds, "convenios");
            conn.desconectar();
            return ds;
        }

        public DataSet getAlumnos()
        {
            conn.conectar();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("select * from alumno order by rut asc", conn.conector);
            da.Fill(ds, "alumnos");
            conn.desconectar();
            return ds;
        }

        public DataSet getArticulos()
        {
            conn.conectar();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("select * from articulo", conn.conector);
            da.Fill(ds, "articulos");
            conn.desconectar();
            return ds;
        }

        public string insertarArticulo(string codigo, string nombre, string descripcion, int stock)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            string variable = "";
            try
            {
                //crear el objeto para realizar un insert
                string sql = "insert into articulo(codigo,nombre,descripcion,stock)values('" + codigo + "','" + nombre + "','" + descripcion + "','" + stock + "')";
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                cmd.ExecuteNonQuery();
                variable = "Nuevo artículo ingresado";
            }
            catch (SqlException)
            {
                variable = "El código o el nombre del artículo ya existe!";
            //    msg = ex.Message;
            }
            conn.desconectar();
            return variable;
        }

        public void BDupdate(string sql)
        {
            try
            {
                conn.conectar();
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                SqlDataReader datareader = cmd.ExecuteReader();
                MessageBox.Show("Datos actualizados correctamente.", "Operación exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (SqlException)
            {
                MessageBox.Show("No se pudo actualizar datos\nPuede deberse a un registro repetido", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            conn.desconectar();
        }

        public Articulo buscarArticulo(string buscar)
        {
            string codigo = "";
            string nombre = "";
            string descripcion = "";
            int stock = 0;
            string sql = "SELECT * FROM articulo WHERE codigo = '" + buscar + "'";
            try
            {
                conn.conectar();
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                SqlDataReader datareader = cmd.ExecuteReader();
                if (datareader.Read())
                {
                    codigo = datareader["codigo"].ToString();
                    nombre = datareader["nombre"].ToString();
                    descripcion = datareader["descripcion"].ToString();
                    stock = Convert.ToInt32(datareader["stock"]);
                    datareader.Close();
                }
                else
                {
                    MessageBox.Show("La busqueda no entregó resultados", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

            }
            catch (SqlException ex)
            {
                MessageBox.Show("Error en la conexión: \n" + ex, "Error Minimarket ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            conn.desconectar();
            Articulo ar = new Articulo();
            ar.codigo = codigo;
            ar.nombre = nombre;
            ar.descripcion = descripcion;
            ar.stock = stock;
            return ar;
        }

        public string crearUser(Usuario u)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            string variable = "";
            try
            {
                //crear el objeto para realizar un insert
                string sql = "insert into usuario(rut,pass,id_perfil,estado)values('" + u.rut_user + "','" + u.contrasena + "','" + u.idperfil + "','" + u.estado + "')";
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                cmd.ExecuteNonQuery();
                variable = "Se ha creado un nuevo usuario.";
            }
            catch (SqlException)
            {
                variable = "El RUT ingresado ya existe!";
                //    msg = ex.Message;
            }
            conn.desconectar();
            return variable;
        }

        public DataSet buscarCBperfil()
        {
            conn.conectar();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("select descripcion, id_perfil from perfil where estado = 'activo' order by id_perfil asc", conn.conector);
            da.Fill(ds, "cbperfil");
            conn.desconectar();
            return ds;
        }

        public int idPerfil(string descripcion)
        {
            Conexion conn = new Conexion();
            conn.conectar();

            string sql = "SELECT id_perfil FROM perfil where descripcion= '" + descripcion + "'";
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            // cmd.ExecuteNonQuery();
            int id = Convert.ToInt32(cmd.ExecuteScalar());
            return id;
        }

        public DataSet verAlumnos(string filtro)
        {
            DataSet dataS = new DataSet();
            SqlDataAdapter data = new SqlDataAdapter();
            dynamic sql = "SELECT * FROM alumno" + filtro;
            conn.conectar();
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            data.SelectCommand = cmd;
            data.Fill(dataS, "ALUMNOS");
            //se retorna un dataset con los datos llenados con la consulta de la busqueda
            conn.desconectar();
            //return dataS;
            return dataS;
        }

        public DataSet verInventario(string filtro)
        {
            DataSet dataS = new DataSet();
            SqlDataAdapter data = new SqlDataAdapter();
            dynamic sql = "SELECT * FROM articulo" + filtro;
            conn.conectar();
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            data.SelectCommand = cmd;
            data.Fill(dataS, "INVENTARIO");
            //se retorna un dataset con los datos llenados con la consulta de la busqueda
            conn.desconectar();
            //return dataS;
            return dataS;
        }

        public int Deuda(string rut)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            //string msg = "";

            string sql = "SELECT total_pagar FROM alumno WHERE rut='" + rut + "'";
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            //cmd.ExecuteNonQuery();
            int deuda = Convert.ToInt32(cmd.ExecuteScalar());
            return deuda;

            //conn.desconectar();
        }

        public string nombreAlum(string rut)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            //string msg = "";

            string sql = "SELECT nombre FROM alumno WHERE rut='" + rut + "'";
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            //cmd.ExecuteNonQuery();
            string deuda = Convert.ToString(cmd.ExecuteScalar());
            return deuda;
        }

        public DataSet getPagos()
        {
            conn.conectar();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("select * from pagos", conn.conector);
            da.Fill(ds, "pagos");
            conn.desconectar();
            return ds;
        }

        public string insertarPago(string rut, string nombre, string fp, string est, int tot)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            string variable = "";
            try
            {
                //crear el objeto para realizar un insert
                string sql = "insert into pagos(rut,nombre,fecha_pago,estado_pago,total_pago)values('" + rut + "','" + nombre + "','" + fp + "','" + est + "'," + tot + ")";
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                cmd.ExecuteNonQuery();
                variable = "Se ha añadido un nuevo pago.";
            }
            catch (SqlException ex)
            {
                variable = "No se pudo completar la operación!\n"+ex;
                //    msg = ex.Message;
            }
            conn.desconectar();
            return variable;
        }

        public DataSet verPagos(string filtro)
        {
            DataSet dataS = new DataSet();
            SqlDataAdapter data = new SqlDataAdapter();
            dynamic sql = "SELECT * FROM pagos" + filtro;
            conn.conectar();
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            data.SelectCommand = cmd;
            data.Fill(dataS, "PAGOS");
            //se retorna un dataset con los datos llenados con la consulta de la busqueda
            conn.desconectar();
            //return dataS;
            return dataS;
        }

        public int idPerfilRut(string rut)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            //string msg = "";

            string sql = "SELECT id_perfil FROM usuario WHERE rut='" + rut + "'";
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            //cmd.ExecuteNonQuery();
            int idperfil = Convert.ToInt32(cmd.ExecuteScalar());
            return idperfil;

            //conn.desconectar();
        }
        
    }
}
